package com.ushine.web.component.task.handler;

import com.ushine.web.component.exception.ServiceException;

/**
 * @Author: yls
 * @Date: 2021/04/28 23:00
 * @Description: 异步任务构造器
 * @Version 1.0
 */
public interface AsyncTaskConstructor {
    /**
     * 功能描述:
     * 〈 初始化：任务如果恢复需要的准备工作，可以不重写 〉
     *
     * @return : void
     * @throws ServiceException 服务端自定义异常
     * @author : yls
     * @date : 2022/2/8 17:35
     */
    default void init() throws ServiceException {

    }

    /**
     * 功能描述:
     * 〈 异步调用 〉
     *
     * @return : void
     * @author : yls
     * @date : 2022/2/8 17:35
     * @throws ServiceException 服务端自定义异常
     * @throws InterruptedException 中断异常
     */
    void asyncRunnable() throws ServiceException, InterruptedException;

    /**
     * 功能描述:
     * 〈 任务发生异常时调用 ，可以不重写 〉
     *
     * @param e 异常信息
     * @return : void
     * @throws ServiceException 服务端自定义异常
     * @author : yls
     * @date : 2022/2/8 17:35
     */
    default void exception(Exception e) throws ServiceException {

    }

    /**
     * 功能描述:
     * 〈 释放资源：建议写在自己的处理逻辑中，不管是否出现异常都会执行 ，可以不重写 〉
     *
     * @return : void
     * @throws ServiceException 服务端自定义异常
     * @author : yls
     * @date : 2022/02/21 11:54
     */
    default void releaseResource() throws ServiceException {
    }

    /**
     * 功能描述:
     * 〈 任务执行成功完成时调用 ，可以不重写 〉
     *
     * @return : void
     * @throws ServiceException 服务端自定义异常
     * @author : yls
     * @date : 2022/2/8 17:35
     */
    default void finish() throws ServiceException {

    }

}
